package cn.wolfcode.controller;

/**
 * @author jishushen
 * @create 2021-02-26 11:31
 */
public class Solution {

    public static void main(String[] args) {

    }

    public static  int findRepeatNumber(int[] nums) {
        //设索引初始值为 i = 0
        int i = 0;
        //遍历整个数组 nums
        while(i < nums.length) {
            //索引 i 的值为 i,无需执行交换操作，查看下一位
            if(nums[i] == i) {
                i++;
                continue;
            }
            //索引 nums[i] 处的值也为 nums[i]，即找到一组相同值，返回 nums[i] 即可
            if(nums[nums[i]] == nums[i]) return nums[i];
            //执行交换操作，目的是为了使索引与值一一对应，即索引 0 的值为 0，索引 1 的值为 1
            int tmp = nums[i];
            nums[i] = nums[tmp];
            nums[tmp] = tmp;
        }
        //如果遍历整个数组都没有找到相同的值，返回 -1
        return -1;
    }

    public static String convert(String s, int numRows) {
        StringBuilder s1 = new StringBuilder();
        if(numRows==1)return s;//特殊情况的处理
        int m=(numRows-1)*2;//每个周期的数
        int n=m;//同行相邻两点的间隔距离
        int i=0;//用来寻找每个周期第一个数
        int mark=0;//用来判断是否是每个周期的第一个数
        int location=0;//每次循环的位置
        while(s1.length()<s.length()) {
            location+=n*mark;//每次都要进行位置的更新
            mark=1;//用来判断是否为周期的第一个数
            if(location>=s.length()) {
                i++;//周期第一个数的改变
                n=m-i*2>0?i*2:m;
                location=i;mark=0;continue;
            }
            s1.append(s.charAt(location));
            n=m-n>0?m-n:n;
        }
        return s1.toString();
    }

}
